home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / sviluppo / pike-0.4.0 / lib / include / stack.pre.pike < prev    next >
Text File  |  1997-01-10  |  552b  |  35 lines

  1. #define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) )
  2.  
  3. class stack {
  4.   int ptr;
  5.   mixed *arr=allocate(32);
  6.  
  7.   void push(mixed val)
  8.   {
  9.     if(ptr==sizeof(arr)) arr+=allocate(ptr);
  10.     arr[ptr++]=val;
  11.   }
  12.  
  13.   mixed pop(mixed val)
  14.   {
  15.     mixed foo;
  16.     if(--ptr < 0)
  17.       error("Stack underflow\n");
  18.     
  19.     foo=arr[ptr];
  20.     arr[ptr]=0; /* Don't waste references */
  21.     return foo;
  22.   }
  23.  
  24.   void reset()
  25.   {
  26.     arr=allocate(32);
  27.     ptr=0;
  28.   }
  29. };
  30.  
  31. void create()
  32. {
  33.   master()->add_precompiled_program("/precompiled/stack",stack);
  34. }
  35.